从零开始学习Linux(四十五):Shell编程之sed命令 |
您所在的位置:网站首页 › linux sed -r › 从零开始学习Linux(四十五):Shell编程之sed命令 |
1、sed简介
sed是Linux平台中的一种轻量级的流编辑器。 sed主要是用来将数据进行选取、替换、删除、新增的命令。 sed命令不仅可以修改文件内容,还可以修改命令结果,支持管道符操作。而vi/vim命令只能修改文件内容。 2、sed命令**命令格式:**sed [选项] '[动作]' 文件名 选项说明: -n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕; -e:允许对输入数据应用多条sed编辑命令; -i:用sed的修改结果直接修改文件,而不是由屏幕输出;动作说明: a:追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结; c:行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“\”代表数据未完结; i : 插入,在当前行插入一行或多行。插入多行时,除最后 一行外,每行末尾需要用“\”代表数据未完结; d:删除,删除指定的行; p:打印,输出指定的行; s:字符串替换,用一个字符串替换另外一个字符串。格式为"行范围s/旧字串/新字串/g"; 3、sed命令示例测试使用成绩表score.txt,内容如下图所示: 执行命令: sed '2p' score.txt 复制代码从图中可以看到重复输出了第二行,而且其他行也输出了。我们的目的是想只输出第二行,其他的行不输出,此时需要加入-n参数。 执行命令: sed -n '2p' score.txt 复制代码执行命令: sed -n '1,2p' score.txt 复制代码命令执行结果如下图所示: 执行命令: sed '2,3d' score.txt 复制代码从上图中可以看到,删除了第二行到第三行的数据。再次查看文件内容,发现文件本身没有被修改。 3.4、a使用—追加数据执行命令: sed '2a hello world' score.txt 复制代码执行命令: sed '2a hello \ world!!!' score.txt 复制代码说明:命令不会改变文件内容! 3.5、i使用—插入多条数据执行命令: sed '2i hello \ world!!!' score.txt 复制代码说明:命令不会改变文件内容! 3.6、c使用—行替换 sed '3c hello world' score.txt 复制代码命令执行结果如下图所示: sed 's/旧字串/新字串/g' 文件名 执行命令,将Jay的英语成绩更改为99: sed '2s/92/99/g' score.txt 复制代码命令执行结果如下图所示: 说明:命令不会改变文件内容! 3.8、修改文件内容执行命令,将Jay更改为Zhou: sed -i 's/Jay/Zhou/g' score.txt 复制代码命令执行结果没有任何返回信息,如下图所示: 再次查看文件内容,发现名称已经变更。 说明:此种场景使用不多,如果真的需要更改文件,直接使用vim命令更加直观也更加可靠! |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |